/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package CapaDatos;

import java.util.Comparator;
import java.util.Iterator;
import java.util.SortedSet;
import java.util.TreeSet;


/**
 *
 * @author Maria
 */
public class ListaHabitacion implements ListaTreeSet {

  private SortedSet <Habitacion> nodoHabitacion;
    private Comparator comparadorId;



      public ListaHabitacion()
    {
        /*
         Se incializa el comparadorApellido con su constructor y
         * se le pasa al nodoCliente para conocer el criterio
         * de ordenamiento de la lista
         */
        comparadorId = (Comparator) new CompararIdHab();
        nodoHabitacion = new TreeSet(comparadorId);

    }


    /**
     *Metodo que imprime el contenido de la coleccion
     *
     */
    public void imprimirColeccion()
    {
        int i;
        Habitacion registroHabitacion;
        Object [] arregloHabitacion;

        arregloHabitacion = nodoHabitacion.toArray();


        System.out.println("DATOS HABITACION");
        System.out.println("-------------");


        for(i=0 ; i<arregloHabitacion.length ; i++)
        {
            registroHabitacion = (Habitacion) arregloHabitacion[i];
//            System.out.println("Tipo de habitacion: "+registroHabitacion.getTipoHab());
            System.out.println("Estado Actual: "+registroHabitacion.getEdoActual());
            System.out.println("Area: "+registroHabitacion.getArea());
            System.out.println("Id: "+registroHabitacion.getID());
            System.out.println();
        }

    }

    /**
     *
     * Metodo public boolean agregarElemento(Nodo objeto): Este metodo agrega
     * el Nodo "objeto" a la coleccion nodoHabitacion
     */
    public boolean agregarElemento(Object objeto)
    {
       Habitacion laHabitacion = (Habitacion) objeto;
        return nodoHabitacion.add(laHabitacion);
    }


    public boolean removerElemento(Object objeto)
    {
        Habitacion laHabitacion = (Habitacion) objeto;
        boolean encontrado = false;
        Habitacion auxiliar = null;

        Iterator iterador = nodoHabitacion.iterator();


        while (!encontrado && iterador.hasNext())
        {

            auxiliar = (Habitacion) iterador.next();


            if (laHabitacion.equals(auxiliar))
                encontrado = true;
        }


        if (encontrado)
        {
            if (nodoHabitacion.remove(auxiliar))
                return true;
        }

        return false;
    }


       public Habitacion BuscarHabitacion (String id)
        {
             boolean encontrado = Boolean.FALSE;
             Habitacion auxiliar = null;


               Iterator iterador = nodoHabitacion.iterator();


        while (!encontrado && iterador.hasNext())
        {

            auxiliar = (Habitacion) iterador.next();

            if (auxiliar.getID().equals(id))
                encontrado=Boolean.TRUE;

          }
            return auxiliar;
        }



       public Boolean BuscarHabitacionPorId (String id)
        {
             boolean encontrado = Boolean.FALSE;
             Habitacion auxiliar = null;


               Iterator iterador = nodoHabitacion.iterator();


        while (!encontrado && iterador.hasNext())
        {

            auxiliar = (Habitacion) iterador.next();

            if (auxiliar.getID().equals(id))
                encontrado=Boolean.TRUE;

          }
            return encontrado;
        }

       public void eliminarHabitacionPorCedula (Integer cedula)
        {
         Habitacion auxiliar=null;
         auxiliar= BuscarHabitacion(String.valueOf(cedula));
         nodoHabitacion.remove(auxiliar);
        }



       public boolean esHabitacionReservada(String id)
       {
             boolean encontrado=false;
             Habitacion auxiliar = null;


               Iterator iterador =nodoHabitacion.iterator();


        while (!encontrado && iterador.hasNext())
        {

            auxiliar = (Habitacion) iterador.next();

            if (auxiliar.getID().equals(id))
            {
                encontrado=true;
                 return encontrado;
            }
       }
       return false;
      }
}

